class Evaluacion::ObjetivoController < ApplicationController

  def list
    @concurso = Concurso.find(params[:id])
    conditions = {}
    conditions[:concurso_id] = params[:id]
    
    if !perfil_nacional?
      conditions[:ejecutivo_id] = session[:user]
    end
    
    @evaluaciones = Evaluacion.paginate :page => params[:page], :per_page => DEFAULT_PER_PAGE, :conditions => conditions
    limite = @concurso.fecha_termino.next_month
    @allow_new = Time.now < limite
  end

  def new
    @evaluacion = Evaluacion.new
    @concurso = Concurso.find(params[:id])
    
    @concurso.concurso_objetivos.each do |o|
      objetivo = EvaluacionObjetivo.new(:objetivo => o.objetivo,
      :puntos_asignados => o.puntos)
      @evaluacion.evaluacion_objetivos << objetivo
    end
  end

  def create
    @evaluacion = Evaluacion.new(params[:evaluacion])
    @evaluacion.ejecutivo_id = session[:user]
    @evaluacion.concurso_id = params[:id]
    concurso = Concurso.find(params[:id])
    
    if @evaluacion.save
      logger.debug "Evaluacion guardada."
      
      puntos_objetivos = 0
      @evaluacion.evaluacion_objetivos.each do |o|
        puntos_objetivos += o.puntos_otorgados
      end
      logger.debug "Total de Puntos Evaluacion por Objetivos: #{puntos_objetivos}"
      
      nuevo_puntaje = PuntajeCentroConsumo.new(:operacion => PuntajeCentroConsumo::ABONO,
        :evaluacion_id => @evaluacion, :centro_id => concurso.centro_id,
        :puntos => puntos_objetivos)
      
      nuevo_puntaje.save!
      
      flash[:notice] = "La Evaluaci&oacute;n se agrego correctamente."
      redirect_to :action => "index", :id => params[:id]
    else
      @concurso = Concurso.find(params[:id])
      render :action => "new", :id => @evaluacion
    end
  end
  
  def index
    list
    
    render :action => "list", :id => params[:id]
  end
  
  def show
    @evaluacion = Evaluacion.find(params[:id])
    concurso = @evaluacion.concurso
    puntos_acumulados = @evaluacion.evaluacion_objetivos.sum('puntos_otorgados').to_i
    
    @genera_salida = puntos_acumulados > concurso.minimo_cumplimiento_centro
    
    @centro = Centro.find(@evaluacion.concurso.centro)
  end
end
